// 组合子模块
// 统一导出供外部业务使用

import React from "react";
import { CounterStore } from "./count_store";
import { ListStore } from "./list_store";

class RootStore {
  constructor() {
    //对子模块实例化操作
    this.counterStore = new CounterStore()
    this.listStore = new ListStore()
  }
}

// 实例化操作
const rootStore = new RootStore()
// 使用react context机制 完成统一方法封装
// Provider value={数据}
// 查找机制：useContext优先从Provider value里面找
// 如果找不到就会取createContext里面默认的参数 即rootStore
const context = React.createContext(rootStore)
// 通过useContext拿到rootStore示例对象 然后返回
const useStore = () => React.useContext(context)

// 也可以通过context.Provider value={rootStore}在App里面包裹下
// 只是那样会更加麻烦

export { useStore }